/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package mx.edu.itschapala.sistemas.septimo.control;

import java.util.ArrayList;
import java.util.List;
import mx.edu.itschapala.sistemas.septimo.modelo.Producto;
import mx.edu.itschapala.sistemas.septimo.enumeracion.TipoBusqueda;

/**
 *
 * @author snake_gt
 */
public class ProductoLnLista  implements ProductoLnLocal{
    private List<Producto> lista = new ArrayList<Producto>();
    //--------------------SINGLETON------------------------------
    private static ProductoLnLista instancia;

    private ProductoLnLista() {
    }

    public static ProductoLnLista getInstancia(){
        if(instancia==null){
            instancia=new ProductoLnLista();
        }
        return instancia;
    }
    //--------------------SINGLETON------------------------------
            
	public void registrar(Producto producto){
		lista.add(producto);
	}
	public void modificar(Producto producto){
		Producto tmp=buscarPorCodigo(producto.getCodigo());
		if(tmp!=null){
			lista.remove(tmp);
			lista.add(producto);
		}

	}
	public void eliminar(Producto producto){
		Producto tmp=buscarPorCodigo(producto.getCodigo());
		if(tmp!=null){
			lista.remove(tmp);
		}

	}
	public Producto buscarPorCodigo(int codigo){
		Producto tmp=null;
		for(Producto p : lista){
			if(p.getCodigo()==codigo){
				tmp=p;
			}
		}
		return tmp;

	}
	public List<Producto> getTodos(){
		return lista;
	}

    @Override
    public List<Producto> getPorNombre(String Nombre, TipoBusqueda criterio) {
        List<Producto> tmp = new ArrayList<Producto>();
        switch(criterio){
            case INICIA:
                for(Producto p : lista){
                    if(p.getNombre().startsWith(Nombre)){
                        tmp.add(p);
                    }
                }
                break;
            case CONTIENE:
                for(Producto p : lista){
                    if(p.getNombre().contains(Nombre)){
                        tmp.add(p);
                    }
                }
                break;
        
        }    
        return tmp;
    }
}
